package com.qf.ayc.utils;

import cn.hutool.jwt.JWT;

import java.util.Date;

    public class JwtUtils {
        //密钥，没有这个就解不开token
        public static final String JWT_SECRET = "qfsy2304";
        //颁发token的项目名字
        public static final String JWT_SIGNER = "FUXI";

        //检验token
        public static boolean checkToken(String token) {
            //1创建jwt对象
            JWT jwt = JWT.of(token);
            //2，设置密钥
            jwt.setKey(JWT_SECRET.getBytes());
            //3，校验，且校验过期时间，0代表容忍过期时间为0秒，过了就算过期无效
            return jwt.validate(0);
        }

        /**
         * 需要在JWT中体现如下信息
         * 1. token 是颁发给哪个用户的?
         * username
         * 2. token的有效期?  120 分
         * 3. token 的签发人是谁? FUXI 颁发时间
         * 4. token 自定义字段
         * 5. token 的密钥(只有服务器端自己知道)
         * @return
         */

        public static String createToken(String username, Integer time) {
            //1. 创建一个jwt对象
            JWT jwt = JWT.create();

            jwt.setSubject(username);//token发给传入的用户，必填
            jwt.setIssuer(JWT_SIGNER);//token给谁颁发
            jwt.setIssuedAt(new Date());//颁发时间
            //设施token过期时间，必填
            jwt.setExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * time));//当前时间过后两小时
            jwt.setKey(JWT_SECRET.getBytes());//设置密钥
            // 创建token
            String token = jwt.sign();
            return token;
        }

        public static void main(String[] args) {
            String token = createToken("班班", 120);
            System.out.println(token);
            System.out.println(checkToken(token));
        }
    }


